package com.ljx.genericity.genericity02;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author LJX
 * @Description: TODO
 * @Date: 2022/10/25 15:53
 * @Version 1.0
 */
public class Test {
	public static void main(String[] args) {
		Info<String> info = new Info<>();
		info.setLjx("aaaaa");
		doSome(info);

		Info<Integer> info1 = new Info<>();
		info1.setLjx(111111);
		doSome(info1); //如果传递的引用类型为泛型，那么就要求泛型也要匹配
	}
	// 如果在Info<String>中指定了要的类型，那么在我们传入参数时一定只能传进去String类型
	// 但是如果后期需要传递int类型的数据，我们需要重新定义方法，所以我们需要传递一个泛型的通配符，
	// 什么类型都可以传递，就不需要再改写方法或着增加方法
	// 指定泛型的通配类型
	public static void doSome(Info<?> info){
		info.show();
	}

}
@Data
@NoArgsConstructor
@AllArgsConstructor
class Info<T>{
	private T ljx;

	public void show(){
		System.out.println("avr = " + ljx);
	}
}